/**
 *
 */
import { defineConfig, loadEnv } from "vite";
/**
 *
 */
import vue from "@vitejs/plugin-vue";

/**
 *  使用 gzip 或者 brotli 来压缩资源
 */
import viteCompression from "vite-plugin-compression";
/**
 *   vite-plugin-vue-setup-extend
 *   插件能够进一步优化 Vue 3 项目的构建流程和开发体验
 */
import vueSetupExtend from "vite-plugin-vue-setup-extend";
/**
 *
 */
import path from "path";

// https://vite.dev/config/
export default defineConfig(({ mode }) => {
  // 获取环境变量
  const env = loadEnv(mode, process.cwd());
  return {
    // 开发和构建模式切换
    mode: "production",

    plugins: [
      /**
       * vite官方插件 提供 Vue 3 单文件组件支持 默认配置即可 无文档
       */
      vue(),
      /**
       *
       */
      vueSetupExtend(),
      /**
       * vite插件 打包时使用gzip或者brotli压缩资源 gzip压缩 生产环境生成 .gz 文件 https://github.com/vbenjs/vite-plugin-compression/blob/main/README.zh_CN.md
       */
      viteCompression({
        verbose: true,
        disable: false,
        threshold: 10240,
        algorithm: "gzip",
        ext: ".gz",
      }),
    ],

    // 解析配置 https://vitejs.cn/vite3-cn/config/shared-options.html#resolve-alias
    resolve: {
      alias: {
        "@": path.resolve(__dirname, "./src"), //import时直接将 @ 当作src目录进行解析
      },
    },
    // 开发模式服务器配置 https://vitejs.cn/vite3-cn/config/server-options.html
    server: {
      hmr: true, // 热更新 关闭 避免每次修改浏览器刷新
      strictPort: true, // * 固定端口(如果端口被占用则中止)
      host: "0.0.0.0", // 设置host 可以在局域网内访问
      port: 16688, // 服务启动端口
    },
  };
});
